80383068: 27 bd ff d0  ADDIU sp, sp, 0xffffffd0 (-48)
8038306c: af bf 00 14  SW ra, sp, 0x14 (20)
80383070: af a4 00 30  SW a0, sp, 0x30 (48)
80383074: af a5 00 34  SW a1, sp, 0x34 (52)
80383078: af a6 00 38  SW a2, sp, 0x38 (56)
8038307c: af a7 00 3c  SW a3, sp, 0x3c (60)
80383080: a3 a0 00 23  SB r0, sp, 0x23 (35)

80383084: 0c 0e 0b e1  JAL 0x80382f84 (-2143801468)        [sp + 0x20] = 0x80382f84([sp + 0x38+2]);
80383088: 87 a4 00 3a  LH a0, sp, 0x3a (58)
8038308c: a7 a2 00 20  SH v0, sp, 0x20 (32)

80383090: 0c 0e 0b fb  JAL 0x80382fec (-2143801364)        [sp + 0x1e] = 0x80382fec([sp + 0x38+2]);
80383094: 87 a4 00 3a  LH a0, sp, 0x3a (58)
80383098: a7 a2 00 1e  SH v0, sp, 0x1e (30)

8038309c: 8f ae 00 30  LW t6, sp, 0x30 (48)
803830a0: 8d cf 00 00  LW t7, t6, 0x0 (0)
803830a4: 85 f8 00 00  LH t8, t7, 0x0 (0)
803830a8: af b8 00 28  SW t8, sp, 0x28 (40)                [sp + 0x28] = **[sp + 0x30];

803830ac: 8f b9 00 30  LW t9, sp, 0x30 (48)
803830b0: 8f 28 00 00  LW t0, t9, 0x0 (0)
803830b4: 25 09 00 02  ADDIU t1, t0, 0x2 (2)
803830b8: af 29 00 00  SW t1, t9, 0x0 (0)                  *[sp + 0x30] += 2;

803830bc: 8f aa 00 28  LW t2, sp, 0x28 (40)
803830c0: af a0 00 2c  SW r0, sp, 0x2c (44)                [sp + 2c] = 0;
803830c4: 19 40 00 3c  BLEZ t2, 0x803831b8 (pc + 0xf0)     if ([sp + 0x28] <= 0) goto 0x0x803831b8;
803830c8: 00 00 00 00  NOP

803830cc: 8f ab 00 3c  LW t3, sp, 0x3c (60)
803830d0: 8d 6c 00 00  LW t4, t3, 0x0 (0)
803830d4: 11 80 00 09  BEQ r0, t4, 0x803830fc (pc + 0x24)  if (!(*[sp + 0x3c])) goto 0x803830fc;
803830d8: 00 00 00 00  NOP

803830dc: 8f ad 00 3c  LW t5, sp, 0x3c (60)
803830e0: 8d ae 00 00  LW t6, t5, 0x0 (0)
803830e4: 81 cf 00 00  LB t7, t6, 0x0 (0)
803830e8: a3 af 00 23  SB t7, sp, 0x23 (35)                [sp + 0x23] = **[sp + 0x3c];

803830ec: 8f b8 00 3c  LW t8, sp, 0x3c (60)
803830f0: 8f 08 00 00  LW t0, t8, 0x0 (0)
803830f4: 25 09 00 01  ADDIU t1, t0, 0x1 (1)
803830f8: af 09 00 00  SW t1, t8, 0x0 (0)                  *[sp + 0x3c] += 1;

803830fc: 8f a4 00 34  LW a0, sp, 0x34 (52)
80383100: 0c 0e 0a df  JAL 0x80382b7c (-2143802500)        [sp + 0x24] = 0x80382b7c([sp + 0x34], [sp + 0x30]);
80383104: 8f a5 00 30  LW a1, sp, 0x30 (48)
80383108: af a2 00 24  SW v0, sp, 0x24 (36)

8038310c: 8f b9 00 24  LW t9, sp, 0x24 (36)
80383110: 13 20 00 18  BEQ r0, t9, 0x80383174 (pc + 0x60)  if (![sp + 0x24]) goto 0x80383174;
80383114: 00 00 00 00  NOP

80383118: 83 aa 00 23  LB t2, sp, 0x23 (35)
8038311c: 8f ab 00 24  LW t3, sp, 0x24 (36)
80383120: a1 6a 00 05  SB t2, t3, 0x5 (5)                  [sp + 0x24]->off0x5 = [sp + 0x23]

80383124: 87 ac 00 3a  LH t4, sp, 0x3a (58)
80383128: 8f ad 00 24  LW t5, sp, 0x24 (36)
8038312c: a5 ac 00 00  SH t4, t5, 0x0 (0)                  [sp + 0x24]->off0x0 = [sp + 0x3a];

80383130: 87 ae 00 1e  LH t6, sp, 0x1e (30)
80383134: 8f af 00 24  LW t7, sp, 0x24 (36)
80383138: a1 ee 00 04  SB t6, t7, 0x4 (4)                  [sp + 0x24]->off0x4 = [sp + 0x1e];

8038313c: 87 a8 00 20  LH t0, sp, 0x20 (32)
80383140: 11 00 00 07  BEQ r0, t0, 0x80383160 (pc + 0x1c)  if (![sp + 0x20]) goto 0x80383160
80383144: 00 00 00 00  NOP

80383148: 8f a9 00 30  LW t1, sp, 0x30 (48)
8038314c: 8f aa 00 24  LW t2, sp, 0x24 (36)
80383150: 8d 38 00 00  LW t8, t1, 0x0 (0)
80383154: 87 19 00 06  LH t9, t8, 0x6 (6)                  [sp + 0x24]->off0x2 = (*[sp + 0x30])->off0x6
80383158: 10 00 00 03  BEQ r0, r0, 0x80383168 (pc + 0xc)   goto 0x80383168;
8038315c: a5 59 00 02  SH t9, t2, 0x2 (2)

80383160: 8f ab 00 24  LW t3, sp, 0x24 (36)
80383164: a5 60 00 02  SH r0, t3, 0x2 (2)                  [sp + 0x24]->off0x2 = 0;

80383168: 8f a4 00 24  LW a0, sp, 0x24 (36)
8038316c: 0c 0e 0a 8b  JAL 0x80382a2c (-2143802836)        0x80382a2c([sp + 0x24], 0);
80383170: 00 00 28 25  OR a1, r0, r0

80383174: 8f ac 00 30  LW t4, sp, 0x30 (48)
80383178: 8d 8d 00 00  LW t5, t4, 0x0 (0)
8038317c: 25 ae 00 06  ADDIU t6, t5, 0x6 (6)
80383180: ad 8e 00 00  SW t6, t4, 0x0 (0)                  *[sp + 0x30] += 6;

80383184: 87 af 00 20  LH t7, sp, 0x20 (32)
80383188: 11 e0 00 05  BEQ r0, t7, 0x803831a0 (pc + 0x14)  if (![sp + 0x20]) goto 0x803831a0;
8038318c: 00 00 00 00  NOP

80383190: 8f a8 00 30  LW t0, sp, 0x30 (48)
80383194: 8d 09 00 00  LW t1, t0, 0x0 (0)
80383198: 25 38 00 02  ADDIU t8, t1, 0x2 (2)
8038319c: ad 18 00 00  SW t8, t0, 0x0 (0)                  *[sp + 0x30] += 2;

803831a0: 8f b9 00 2c  LW t9, sp, 0x2c (44)                    t9 = [sp + 0x2c]
803831a4: 8f ab 00 28  LW t3, sp, 0x28 (40)                    t3 = [sp + 0x28]
803831a8: 27 2a 00 01  ADDIU t2, t9, 0x1 (1)                   t2 = t9 + 1 = [sp + 0x2c] + 1
803831ac: 01 4b 08 2a  SLT at, t2, t3                          at = t2 < t3 =  [sp + 0x2c] + 1 < [sp + 0x28]
803831b0: 14 20 ff c6  BNE at, r0, 0x803830cc (pc - 0xe8)      [sp + 0x2c] = [sp + 0x2c] + 1
803831b4: af aa 00 2c  SW t2, sp, 0x2c (44)                if (++[sp + 0x2c] < [sp + 0x28]) goto 0x803830cc

803831b8: 10 00 00 01  BEQ r0, r0, 0x803831c0 (pc + 0x4)
803831bc: 00 00 00 00  NOP
803831c0: 8f bf 00 14  LW ra, sp, 0x14 (20)
803831c4: 27 bd 00 30  ADDIU sp, sp, 0x30 (48)
803831c8: 03 e0 00 08  JR ra
803831cc: 00 00 00 00  NOP



[sp + 0x1e]  short  lv2
[sp + 0x20]  short  lv1
[sp + 0x23]  char  lv5
[sp + 0x24]  *void lv6
[sp + 0x28]  long  lv3
[sp + 0x2c]  long  lv4

[sp + 0x30]  **short  arg1(pwp)
[sp + 0x34]  *short  arg2  pverts
[sp + 0x38]    arg3  command
[sp + 0x3c]  **char  arg4

void 0x80383068(short **pwp, short *pverts, short command, char **arg4)
{
    lv1 = 0x80382f84(command); //check if command has extra two bytes
    lv2 = 0x80382fec(command);
    lv3 = **pwp;
    *pwp++;

    for (lv4 = 0; lv4 < lv3; lv4++) {
        if (*arg4) {
            lv5 = **arg4;
            *arg4++;
        }
        lv6 = 0x80382b7c(pverts, pwp); //alloc, init, and compute plane equation
        if (lv6) {
            lv6->off0x5 = lv5;
            lv6->off0x0 = command;
            lv6->off0x4 = lv2;
            if (lv1) {
                lv6->off0x2 = (*pwp)[3]
            } else {
                lv6->off0x2 = 0;
            }
            0x80382a2c(lv6, 0);
        }
        *pwp += 3;
        if (lv1) {
            *pwp++
        }
    }
}
